window.phoenix&&(window.phoenix.buildInfo||(window.phoenix.buildInfo=[]),-1===window.phoenix.buildInfo.findIndex((e=>"Phoenix-experience"===e.MFE))&&window.phoenix.buildInfo.push({MFE:"Phoenix-experience",VERSION:"rc-phoenix-experience-1.1.26105.1370789671-5a319f99-4-gb151444",LASTCOMMITDATETIME:"2024-07-12T10:57:26+00:00"})) /*! * * ============= BUILD INFO ============= * MFE: Phoenix-experience * chunkName: clientlib-utils/index * VERSION: rc-phoenix-experience-1.1.26105.1370789671-5a319f99-4-gb151444 * BRANCH: HEAD * COMMITHASH: b15144446b0aeb869603529fd56baec1576b10c9 * LASTCOMMITDATETIME: 2024-07-12T10:57:26+00:00 * ============= If you're reading this, why not come work with us? https://www.t-mobile.com/careers ============= */,function(){"use strict";const e={appName:"phoenix-experience",className:"getErrorMessage"};const t={AMEX:"amex",DATA_ATTRIBUTE_CC_TYPE:"data-cc-type",BLOCKS_CVV_AMEX:[4],BLOCKS_CVV_DEFAULT:[3],EXPECTED_LENGTH_CVV_AMEX:4,EXPECTED_LENGTH_CVV_DEFAULT:3,EXPECTED_LENGTH_CC_AMEX:15,EXPECTED_LENGTH_CC_DEFAULT:16},i={appName:"phoenix-experience",className:"FormValidation"},r=()=>({numericOnly:!0,blocks:t.BLOCKS_CVV_AMEX,onValueChanged:function(){const e=this.element?.getAttribute("data-xpr-field-iodine");if(e)try{const i=JSON.parse(e)?.find((e=>e.includes("tmoCreditCardCvv")))?.split(":")[1],r=document.querySelector(`input[name="${i}"]`),n=r?.getAttribute(t.DATA_ATTRIBUTE_CC_TYPE),a=n===t.AMEX;this.properties.blocks=a?t.BLOCKS_CVV_AMEX:t.BLOCKS_CVV_DEFAULT}catch(e){window.phoenix.log.error("Missing Credit Card input: Credit Card input with cc data type is required for this to work",i)}}});function n(e){if(null==e||""===e)return!1;const t=e.replace(/ /g,"");if(t.startsWith("*"))return!0;let i=t.split("").map(Number);const r=i.pop();i=i.reverse().map(((e,t)=>(t%2==0&&(e*=2)>9&&(e-=9),e)));return 9*i.reduce(((e,t)=>e+t),0)%10===r}function a(e){return e===t.AMEX}function o(e,i){return(i?t.EXPECTED_LENGTH_CC_AMEX:t.EXPECTED_LENGTH_CC_DEFAULT)===e.length}function s(e){const i=e.value.replace(/ /g,""),r=a(e.getAttribute(t.DATA_ATTRIBUTE_CC_TYPE)),s=o(i,r),l=!!s&&n(i);return{isValidLength:s,cardNumberNoSpaces:i,isAmexCardType:r,validLuhnCheck:l,isValid:s&&l}}const l=e=>({creditCard:!0,onValueChanged:function(i){const r=i?.target?.rawValue,n=e[i.target.name],o=n.node.closest("[data-xpr-form-input]"),l=o?.querySelector("[data-cleave-type-aria]"),u=this.properties.creditCardType;o?.setAttribute(t.DATA_ATTRIBUTE_CC_TYPE,u),n.node.setAttribute(t.DATA_ATTRIBUTE_CC_TYPE,u),l?.setAttribute("aria-label",u),(e=>{if(null===e.getAttribute("data-cc-mask")){let t;e.setAttribute("data-cc-mask","true"),e.addEventListener("blur",(()=>{const{cardNumberNoSpaces:i,isAmexCardType:r,isValid:n}=s(e);n&&(t=e.value,e.value=function(e,t){const i=e.replace(/ /g,"").slice(-4);return t?`**** ****** *${i}`:`**** **** **** ${i}`}(i,r))})),e.addEventListener("focusin",(()=>{const{isValid:i}=s(e);i&&(e.value=t)}))}})(n.node),window.phoenix.bus.publish("CLEAVE","CREDIT_CARD",{payload:{cardType:u,value:r,isAmex:a(u)}})}}),u=e=>{e?.value?.length&&(e.value="$"+e.value)},d=e=>({numeral:!0,numeralPositiveOnly:!0,onValueChanged:t=>{const i=e[t.target.name];var r;i.cleave.rawValue=t.target.rawValue,r=i.node,r?.getAttribute("data-xpr-price-mask")||(r?.setAttribute("data-xpr-price-mask","true"),r?.addEventListener("input",u.bind(null,r)),u(r))}}),c=e=>({blocks:[11],onValueChanged:function(t){const i=t?.target?.rawValue;e[t.target.name].cleave.rawValue=i}});function p(e){return e&&e.length>=7&&e.length<=17}const m=e=>({numericOnly:!0,blocks:[17],onValueChanged:function(t){const i=t?.target?.rawValue;(e=>{if(null===e.getAttribute("data-account-mask")){let t;e.setAttribute("data-account-mask","true"),e.addEventListener("focusout",(()=>{p(e.value)&&(t=e.value,e.value=function(e){return e.value?.slice(-4).padStart(e.value.length,"*")}(e))})),e.addEventListener("focusin",(()=>{p(e.value)&&(e.value=t)}))}})(e[t.target.name].node),window.phoenix.bus.publish("CLEAVE","ACCOUNT_NUMBER",{payload:{value:i}})}});function h(e,t){t.forEach((t=>{const i=t.hasAttribute("data-xpr-field-cleave"),n=t.getAttribute("data-xpr-field-cleave"),a=(e=>({date:{date:!0,delimiter:"/",datePattern:["m","d","Y"]},numeral:{numeral:!0,delimiter:"",numeralDecimalScale:0},phone:{numericOnly:!0,blocks:[0,3,3,4],delimiters:["(",") ","-"],onValueChanged:function(t){const i=t?.target,r=i?.rawValue;e[i?.name].cleave.rawValue=r}},"tmo-phone-pin":{numericOnly:!0,blocks:[6],delimiters:[""],onValueChanged:function(t){const i=t?.target,r=i?.rawValue;e[i?.name].cleave.rawValue=r}},ssn:c(e),"cc-number":{creditCard:!0},"cc-expiration":{date:!0,datePattern:["m","y"]},"cc-cvv":{numericOnly:!0,blocks:[4]},"tmo-cc-number":l(e),"tmo-cc-cvv":r(),"tmo-account-number":m(e),"tmo-price":d(e)}))(e)[n],o=function(e){try{e=JSON.parse(e)}catch(e){return!1}return"object"==typeof e&&null!==e}(n);if(i)if(a)new window.Cleave(t,a);else{if(!o)return;new window.Cleave(t,JSON.parse(n))}}))}const g={appName:"phoenix-experience",className:"FormValidation"};class f{standalone;userAgent;safari;ios;constructor(){this.standalone=window.navigator?.standalone??!1,this.userAgent=window.navigator.userAgent.toLowerCase(),this.safari=/safari/.test(this.userAgent),this.ios=/iphone|ipod|ipad/.test(this.userAgent),this.ios?this.standalone||this.safari||this.hideElements():this.userAgent.includes("wv")&&this.hideElements()}hideElements(){document.querySelectorAll("[data-xpr-web-view-hidden]").forEach((e=>{e.hidden=!0}))}}document.addEventListener("DOMContentLoaded",(()=>new f));var b={remove:function(e){if(e){const t=e.querySelector("[data-skeleton-type]"),i="true"===e.getAttribute("data-skeleton"),r="true"===e.getAttribute("aria-busy");e?.setAttribute("data-skeleton",String(!i)),e?.setAttribute("aria-busy",String(!r)),t&&t.remove()}}};window.phoenix=window.phoenix||{},window.phoenix.experience=window.phoenix.experience||{},window.phoenix.experience.utils=window.phoenix.experience.utils||{},window.phoenix.experience.utils.registerMediaQuerySensor=function(e){let t;if(void 0!==e.min&&void 0!==e.max?t=window.matchMedia(`${e.min} and ${e.max}`):void 0!==e.min?t=window.matchMedia(`${e.min}`):void 0!==e.max&&(t=window.matchMedia(`${e.max}`)),e.action){const i=()=>t?.matches?e.action(!0):e.action(!1);i(),t?.addEventListener("change",i)}},window.phoenix.experience.utils.FormValidation=class{inputElements;inputs;isFormStarted;isFormClean;isFormValid;isFormComplete;componentIdSymbol;form;constructor(e,t){this.inputElements=e,this.inputs={},this.isFormStarted=!1,this.isFormClean=!1,this.isFormComplete=!1,this.isFormValid=!1,this.form=t,this.initValidationService()}initValidationService(){[...this.inputElements].forEach((e=>{this.inputs[e.name]={blurred:!1,disabled:!("true"!=e.getAttribute("aria-disabled")&&!e.getAttribute("disabled")),errorMessage:"",node:e,nodeContainer:e.closest("[data-xpr-form-input]"),nodeTrack:e.closest("[data-xpr-form-track]"),nodeError:e.closest("[data-xpr-form-input]")?.querySelector("[data-xpr-field-feedback-error]"),nodeErrorText:e.closest("[data-xpr-form-input]")?.querySelector("[data-xpr-field-feedback-error] span"),cleave:{rawValue:""},messages:{required:e.dataset?.xprFieldErrorRequired??"",requiredChoice:e.dataset?.xprFieldErrorRequired??"",minLength:e.dataset?.xprFieldErrorLengthmin??"",maxLength:e.dataset?.xprFieldErrorLengthmax??"",regexMatch:e.dataset?.xprFieldErrorRegex??""},returnRawValue:!!e.hasAttribute("data-xpr-field-rawvalue")}})),this.validate(),this.setInitialInputStates(),h(this.inputs,this.inputElements)}setInitialInputStates(){[...this.inputElements].forEach((e=>{const t=this.inputs[e.name],i=e.getAttribute("data-xpr-field-value")||"";t?.nodeTrack?.setAttribute("data-complete",e?.value?.length>=1||i.length>=1?"true":"false"),t?.nodeTrack?.setAttribute("data-disabled","true"==e?.getAttribute("aria-disabled")||e?.getAttribute("disabled")?"true":"false")}))}validate(){return this.isFormClean=!0,[...this.inputElements].forEach((t=>{const i=this.inputs[t.name];i.errorMessage=function(t,i){let r;try{r=window.Iodine.is(t.value,JSON.parse(t.getAttribute("data-xpr-field-iodine")??"{}"))}catch(r){return void window.phoenix.log.debug(`${String.fromCodePoint(128683)} form initialization error: "${t.name}" input could not be initialized. Please verify your Iodine configuration is valid.`,e)}const n=i[t.name]?.blurred,a=("string"==typeof r&&i[t.name]?.messages[r?.split(":")[0]])??"";if("checkbox"===t.type&&(t.closest('[role="group"]')||t.closest("fieldset"))&&"true"===t.getAttribute("aria-required")){const e=t.closest('[role="group"]')||t.closest("fieldset"),i=e?.querySelectorAll('input[type="checkbox"]:checked');if(i?.length)return t.required=!1,"";t.required=!0}return!0!==r&&n&&a?a:!0!==r&&n&&"string"==typeof r?window.Iodine.getErrorMessage(r):""}(t,this.inputs)??"",t.checkValidity()&&!i.errorMessage||(this.isFormClean=!1),i.nodeError?.setAttribute("aria-hidden",i.errorMessage?"false":"true"),i.nodeErrorText&&(i.nodeErrorText.textContent=i.errorMessage),i.errorMessage?i.node?.setAttribute("aria-invalid","true"):i.node?.removeAttribute("aria-invalid")})),this.isFormClean}getFormData(){if(this.form)return function(e,t){const i=new FormData(e),r={};return i.forEach(((e,i)=>{Reflect.has(r,i)?(Array.isArray(r[i])||(r[i]=[r[i]]),r[i].push(e)):""!==t[i]?.cleave?.rawValue?r[i]=t[i]?.cleave?.rawValue:r[i]=e})),r}(this.form,this.inputs);window.phoenix.log.error("Missing Argument: Service must be passed a form to use getFormData()",g)}registerForm(e){this.componentIdSymbol=e,window.phoenix.bus.publish("FORM","REGISTER",{id:this.componentIdSymbol})}unregisterForm(){window.phoenix.bus.publish("FORM","UNREGISTER",{id:this.componentIdSymbol})}handleFormChange(e){const t=e.target,i=this.inputs[t?.name];if(this.analyticsFormStart(),i?.nodeTrack?.setAttribute("data-complete",t?.value?.length>=1?"true":"false"),"focusout"===e.type&&((t?.value?.length>1||"focusout"===e.type)&&(i.blurred=!0),this.isFormValid=this.validate(),this.isFormValid&&!this.isFormComplete)){if(this.form){const e=this.form.cloneNode(!0);e.querySelector('input[type="checkbox"]')?.remove(),this.form.querySelector("[data-xpr-lead-gen]")||window.phoenix.bus.publish("FORM","COMPLETE",{payload:{form:{$el:e}}})}this.isFormComplete=!0}}publishFormValidity(e){const t=this.isFormValid?"VALID":"INVALID";window.phoenix.bus.publish("FORM",t,{payload:e,id:this.componentIdSymbol})}resetFormValidation(){this.isFormStarted=!1,this.isFormClean=!1,this.isFormComplete=!1,this.isFormValid=!1,[...this.inputElements].forEach((e=>{const t=this.inputs[e.name];t.blurred=!1,t.errorMessage="",t.cleave.rawValue="",t.nodeError?.setAttribute("aria-hidden","true"),t.node?.removeAttribute("aria-invalid"),t.nodeTrack?.setAttribute("data-complete","false")}))}analyticsFormStart(){!this.isFormStarted&&this.form&&this.form?.hasAttribute("data-analytics-enable-tracking")&&(window.phoenix.bus.publish("FORM","START",{payload:{form:{$el:this.form}}}),this.isFormStarted=!0)}},window.phoenix.experience.utils.scrollToTarget=function(e){e.offset=e.offset||0;const t=parseInt(document.documentElement.style.getPropertyValue("--js--header-height-overall")||"0px"),i=function(e){const t=e?.getBoundingClientRect(),i=document.body,r=document.documentElement,n=window.pageYOffset||r.scrollTop||i.scrollTop,a=r.clientTop||i.clientTop||0,o=t?.top+n-a;return Math.round(o)}(e.scrollToElement)-t-e.offset;window.scrollTo({top:i,behavior:"smooth"})},window.phoenix.experience.utils.FormAutofill=class{constructor(){this.init()}init(){document.addEventListener("animationstart",this.onAnimationStart.bind(this),!0),document.addEventListener("input",this.onInput.bind(this),!0)}onAnimationStart(e){""===e.target?.value?this.cancelAutocomplete(e.target):"onautofillstart"===e.animationName&&this.autocomplete(e.target)}onInput(e){""===e.target?.value?this.cancelAutocomplete(e.target):"insertReplacementText"!==e.inputType&&"data"in e||this.autocomplete(e.target)}autocomplete(e){e.hasAttribute("autocompleted")||e.setAttribute("autocompleted",""),window.phoenix.bus?.publish("FORM_AUTOFILL","COMPLETE",{type:"autofill",target:e})}cancelAutocomplete(e){e&&e.hasAttribute("autocompleted")&&e.removeAttribute("autocompleted")}},window.phoenix.experience.utils.idFromString=function(e){return e.match(/[0-9]+[^0-9]+/g)?e:(e===e.toUpperCase()&&(e=e.toLowerCase().replace(/[^a-z0-9]+(.)/g,((e,t)=>t.toUpperCase()))),e.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]\+/g)?.map((e=>e.toLowerCase()))?.join("-")||"")},window.phoenix.experience.utils.skeleton=b}();